package com.gopay.common.util.pwd;

import org.apache.commons.lang3.StringUtils;

//import com.gopay.common.cipher.utils.SensitiveInfoDictionaryUtils;
import com.gopay.common.util.NonrevEncr;

/**
 * @author jianglijun
 * @ClassName: UserPwdUtil
 * @Description: 解决用户登录密码、支付密码、安全问题的校验
 * @date 2016年9月7日 下午3:57:35
 */
public class UserPwdUtil {
    public static final String ENCRYPT_METHOD_SHA1="sha1";
    public static final String ENCRYPT_METHOD_SHA512="sha512";
    
    /**
     * 判断用户密码是否一致
     * @param encryptPwd 数据库密文
     * @param src 要加密的字符串
     * @return
     */
    public static boolean checkPwd(String encryptPwd, StringBuilder src) {
        boolean result = false;
        String newEncryptPwd = getEncryptPwd(encryptPwd, src);
        if(StringUtils.equalsIgnoreCase(encryptPwd, newEncryptPwd)) {
            result = true;
        }
        return result;
    }

    /**
     * 通过数据库密文长度判断算法类型，并返回加密后的密文
     * @param encryptPwd 数据库密文
     * @param src 要加密的字符串
     * @return
     */
    public static String getEncryptPwd(String encryptPwd, StringBuilder src) {
        String newEncryptPwd = "";
        if(StringUtils.isNotBlank(encryptPwd)) {
            if(isSHA1(encryptPwd)){
                newEncryptPwd = NonrevEncr.sha1(src);
            }else{
                newEncryptPwd = NonrevEncr.sha512(src);
            }
        }
        return newEncryptPwd;
    }
    
    /** 
     * @Description:获取数据库中的加密字段 判断当前加密方式
     * @param encryptFiled 数据库中数据的加密字段
     * @return 加密方法名称
     * @author lx 
     */
    public static String getEncryptMethodName(String encryptFiled){
        if (isSHA1(encryptFiled)) {
            return ENCRYPT_METHOD_SHA1;
        } else {
            return ENCRYPT_METHOD_SHA512;
        }
    }
    
    /** 
     * @Description: 判断加密方式 是否是SHA1 
     * @param encryptFiled 数据库中数据的加密字段
     * @return sha1 返回 true
     * @author lx 
     */
    public static boolean isSHA1(String encryptFiled){
        //add by zyt，防止空指针的情况
        //start++++++
        if(StringUtils.isBlank(encryptFiled)){
            return false;
        }
        //end+++++++++
        if(encryptFiled.startsWith("SHA512_")){
            return false;
        }else{
            return true;
        }
    }
    
    
}
